#if !defined(__DAEMON_SUB_PROCESS)
#define __DAEMON_SUB_PROCESS

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

#define MAX_FAILED_COUNT 5
#define GATEWAY_CMD_NAME  "/usr/bin/gateway"

typedef struct {
    pid_t pid; // 子进程的pid
    char *cmd; // 子进程的命令 app/ota 
    int failed_count;// 子进程失败次数
} sub_process_t;

/**
 * @brief 子进程的初始化 
 * @param cmd 子进程的命令
 * @return sub_process_t*
 * 为子进程  创建一个结构体，填写相关的参数
 */
sub_process_t *daemono_sub_process_init(char *cmd) ;

/**
 * @brief 子进程监控和启动
 * @param sub_process 子进程结构体
 */
int daemon_sub_process_check_start(sub_process_t *sub_process);

/**
 * @brief 子进程e结束
 * @param sub_process 子进程结构体
 */
void daemon_sub_process_exit(sub_process_t *sub_process);


#endif // __DAEMON_SUB_PROCESS
